import { defineConfig, loadEnv } from "vite"
import path from "path"
import createVitePlugins from "./vite/plugins"
import qiankun from "vite-plugin-qiankun"
import { name as packageName } from "./package.json"
import vueJsx from "@vitejs/plugin-vue-jsx"
// import legacy from "@vitejs/plugin-legacy"
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
  const env = loadEnv(mode, process.cwd())
  // const { VITE_APP_ENV } = env
  return {
    // 部署生产环境和开发环境下的URL。
    // 默认情况下，vite 会假设你的应用是被部署在一个域名的根路径上
    // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上，你就需要用这个选项指定这个子路径。例如，如果你的应用被部署在 https://www.ruoyi.vip/admin/，则设置 baseUrl 为 /admin/。
    base: `/${packageName}/`,
    plugins: [
      createVitePlugins(env, command === "build"),
      qiankun(packageName, { useDevMode: true }),
      vueJsx(),
      // legacy({
      //   // targets: ["firefox"],
      //   // additionalLegacyPolyfills: ["regenerator-runtime/runtime"],
      //   renderLegacyChunks:true,
      //   // ignoreBrowserslistConfig:true,
      //   // modernPolyfills: true,
      //   polyfills:[
      //     // 'es.symbol',
      //     // 'es.promise',
      //     // 'es.promise.finally',
      //     // 'es/map',
      //     // 'es/set',
      //     // 'es.array.filter',
      //     // 'es.array.for-each',
      //     // 'es.array.flat-map',
      //     // 'es.object.define-properties',
      //     // 'es.object.define-property',
      //     // 'es.object.get-own-property-descriptor',
      //     // 'es.object.get-own-property-descriptors',
      //     // 'es.object.keys',
      //     // 'es.object.to-string',
      //     // 'web.dom-collections.for-each',
      //     'esnext.global-this',
      //     // 'esnext.string.match-all'
      //   ]
      // }),
    ],
    resolve: {
      // https://cn.vitejs.dev/config/#resolve-alias
      alias: {
        // 设置路径
        "~": path.resolve(__dirname, "./"),
        // 设置别名
        "@": path.resolve(__dirname, "./src"),
      },
      // https://cn.vitejs.dev/config/#resolve-extensions
      extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
    },
    build: {
      outDir: `./dist/${packageName}`,
      // sourcemap: true,
      chunkSizeWarningLimit: 1500,
      rollupOptions: {
        output: {
          manualChunks(id) {
            if (id.includes("node_modules")) {
              return id.toString().split("node_modules/")[1].split("/")[0].toString()
            }
          },
          chunkFileNames: (chunkInfo) => {
            const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split("/") : []
            const fileName = facadeModuleId[facadeModuleId.length - 2] || "[name]"
            return `js/${fileName}/[name].[hash].js`
          },
        },
      },
    },
    // vite 相关配置
    server: {
      port: 3050,
      origin: "http://localhost:3050",
      headers: {
        "Access-Control-Allow-Origin": "*", // 主应用获取子应用时跨域响应头
      },
    },
    //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
    css: {
      postcss: {
        plugins: [
          {
            postcssPlugin: "internal:charset-removal",
            AtRule: {
              charset: (atRule) => {
                if (atRule.name === "charset") {
                  atRule.remove()
                }
              },
            },
          },
          require("tailwindcss"),
          require("autoprefixer"),
        ],
      },
    },
  }
})
